// $Id: nodevanilla.h 61 2004-10-22 13:41:50Z hansemil $
#ifndef NODEVANILLA_H
#define NODEVANILLA_H

#include "node.h"

/**
 * This node implements standard Freenet properties and functionality. The
 * routing and file cache uses LRU (Least Recently Used) scheme. Extensions to
 * Freenet would propably want to inherit from this class and only overload
 * methods where functionality shall change.
 */
class NodeVanilla : public virtual Node {
public:
	NodeVanilla(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, float, float, FileHandler *);
	~NodeVanilla();

	bool addNeighbor(Node *, unsigned int);
	void execute();
	StoredFile *storeFile(File *, bool fullSize=false);
	bool routeFile(Node *, NodeRequestFileParameters *);
	void generateRequestOrderList(File *, std::list<KeyDistanceHelper> &);

private:
	std::map<unsigned int, bool> m_processedGuids;
};

#endif
